iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0
Mobile Development

Android開發之旅:從Java到Kotlin,迎接Compose時代系列 第 6

Java實戰(四):添加通知提醒功能,讓待辦事項更加實用

  • 分享至 

  • xImage
  •  

在這篇文章中,我們將探討如何在待辦事項管理應用中添加通知提醒功能,讓用戶能夠及時獲取待辦事項的更新和提醒。以下是實現此功能的步驟:

步驟 1:設置通知渠道

在 Android 8.0(API 26)及以上版本中,必須為通知創建一個管道。這樣用戶可以管理不同類型通知的行為。首先,在 MainActivity 中創建一個方法來設置通知管道。

private void createNotificationChannel() {
    
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        
        CharSequence name = "Todo Notifications";
        
        String description = "Channel for Todo reminders";
        
        int importance = NotificationManager.IMPORTANCE_DEFAULT;
        
        NotificationChannel channel = new NotificationChannel("TODO_CHANNEL", name, importance);
        
        channel.setDescription(description);
        
        NotificationManager notificationManager = getSystemService(NotificationManager.class);
        
        notificationManager.createNotificationChannel(channel);
    }
}

步驟 2:設計通知提醒的觸發條件

我們需要決定何時觸發通知。可以在用戶新增待辦事項時,讓用戶選擇提醒時間。這可以通過 DatePickerTimePicker 來實現,並將選擇的時間存儲在 TodoItem 中。

步驟 3:建立通知發送方法

接下來,我們需要建立一個方法來發送通知。這個方法將使用 NotificationCompat.Builder 來組成通知,並在指定的時間發送。

private void sendNotification(String title, String message) {

    NotificationCompat.Builder builder = new 

    NotificationCompat.Builder(this, "TODO_CHANNEL")
    .setSmallIcon(R.drawable.ic_notification)
    .setContentTitle(title)
    .setContentText(message)
    .setPriority(NotificationCompat.PRIORITY_DEFAULT);

    NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
    
    notificationManager.notify(1, builder.build());
}

步驟 4:設定 AlarmManager

為了在指定時間發送通知,我們需要使用 AlarmManager。在用戶選擇提醒時間後,設置一個 PendingIntent,並將其與 AlarmManager 進行綁定。

private void scheduleNotification(long triggerAtMillis, String title, String message) {
    
    Intent intent = new Intent(this, NotificationReceiver.class);   
    
    intent.putExtra("title", title);
    
    intent.putExtra("message", message);
    
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    
    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    
    alarmManager.setExact(AlarmManager.RTC_WAKEUP, triggerAtMillis, pendingIntent);
}

步驟 5:建立接收器

最後,我們需要建立一個 BroadcastReceiver 來接收 AlarmManager 的觸發,並在接收到事件時發送通知。

    public class NotificationReceiver extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            
            String title = intent.getStringExtra("title");
            
            String message = intent.getStringExtra("message");
            
            sendNotification(context, title, message);
        }
    }

結論

通過以上步驟,我們成功地在待辦事項管理應用中添加了通知提醒功能。這不僅提升了用戶體驗,還使得App更加實用。在接下來的文章中,我們將進一步探討如何整合 SQLite 資料庫,管理待辦事項資料。


上一篇
Java實戰(三):實現待辦事項的分類與標籤系統
下一篇
Java實戰(五):整合SQLite資料庫,管理待辦事項資料
系列文
Android開發之旅:從Java到Kotlin,迎接Compose時代9
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言